package com.leil.java8.未绑定的方法引用;

class X {
    void f() {
        System.out.println("X::f");
    }
}

interface A {
    void f();
}

interface B {
    void f(X x);
}

public class UnboundMethodReference {

    public static void main(String[] args) {

//        A a = X::f;   //invalid method reference...因为实际上还有另一个隐藏的参数：我们的老朋友 this,所以我们的接口实际上需要一个额外的参数的接口

        X x = new X();
        B b = X::f; // 正确
        // 下面两种方式调用结果相同
        b.f(x);
        x.f();
    }

}
